home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Skunkware 98
/
Skunkware 98.iso
/
src
/
net
/
bind-contrib.tar.gz
/
bind-contrib.tar
/
contrib
/
msql
/
README
< prev
next >
Wrap
Text File
|
1996-10-25
|
5KB
|
135 lines
msql_bind 1.0
msql_bind is an extension of BIND-4.9.3 which is maintained by Paul
Vixie (paul@vix.com). mSQL is maintained by David Hughes
(bambi@bond.edu.au). msql_bind is maintained by Chris Seawood
(mgrcls@nextwork.rose-hulman.edu).
msql_bind loses none of the functionality of stock BIND, yet adds
features like adding machines, changing machine information, and
adding zones (not throughly tested), without having to restart your
named daemon or changing multiple .db files. (Note: adding zones
requires editing your /etc/named.boot) msql_bind can also be run
without using a db, but currently treats every entry as static,
defeating the purpose of msql_bind.
Requirements:
------------
msql_bind requires the mSQL package, preferably 1.0.5 or higher. The
latest version of mSQL can be found at bond.edu.au:/pub/Minerva/msql.
Files:
------
model.bind : the basic tables needed to run msql
bind_admin : perl script to enter, remove, edit, and list dns entries.
zone_admin : perl script to enter, remove, edit, and list zone entries.
read_dnswalk : perl script to read axfr files generated by dnswalk
dnswalk : perl script from bind 4.9.3 pkg, dumps current zone
contents to a file
msql.dom : a sample .db file that contains a valid msql_bind line
bind-4.9.3-BETA24.950802.cdiff : patch against stock bind-4.9.3-BETA24
How it works:
------------
1. You must have a mSQL database: `msqladmin create dbname`
2. You must create the tables for msql_bind by using the model.bind
file: `msql dbname < model.bind`
*WARNING*: this will remove any existing tables with the names
msql_dns and msql_zones.
3. Before you shutdown your existing named, you need to run dnswalk
for each of your zones. (Ex: dnswalk rose-hulman.edu. ,
dnswalk cs.rose-hulman.edu., etc.)
4. You need to run read_dnswalk to place entries into your database.
(Ex: read_dnswalk dbname cs.rose-hulman.edu. edu/rose-hulman/cs/axfr )
5. You must edit your named.boot to reference msql.dom instead of
your current .db files. Note: a msql_bind line can be used in any
.db file at any place (after the SOA & NS records, of course), so that
you can use the database for only select entries.
Make sure that msqld is running on your choosen msqlserver and you are
all set.
Internals:
----------
This will/should contain all of the pertinent info about msql_bind.
The key element of msql_bind is time. The tables used by msql_bind are:
Note: the '\g' are commands to msql to complete a query, and are needed.
CREATE TABLE msql_dns (
dns_entry int primary key,
zoneid int not null,
machine char(40) not null,
class char(10) not null,
type char(10) not null,
info char(127) not null,
assigned_time int not null,
importance int not null,
dynamic int not null
)
\g
CREATE TABLE msql_zones (
name char(40) primary key,
zoneid int not null
)
\g
The machine, class, type, and info fields are almost
self-explanatory. They mimic values used in flatfiles.
The zoneid field maps to a certain zone in the zones table. This
allows you to have query entries for local domai ns w/o having to use
the fqdn. For example, if I have the following row:
'purple',2,'IN','A','137.112.3.11',0,4,0 with zone entries
'nextwork.',2
'nextwork.rose-hulman.edu.',2
Then from the subdomain cs.rose-hulman.edu, I could lookup
purple.nextwork instead/in addition to purple.nextwork.rose-hulman.edu
Note: each domain must end with a "." msql_bind will *not* work otherwise
The key element behind msql_bind is the assigned_time field. All
updates are made based upon the value of this field verses the last
updated time. The bind_admin script automatically places the current
time whenever you add or edit an entry.
The importance field is used to distinguish between different types of
entries. SOA entries have importance of 1, NS -- 2, other records for
the SOA table (A is the only one that comes to mind) -- 3, everything
else 4.
The dynamic field is self-explanatory. The reason it is used is to
remove the old entries (if it can find them) from the cache, before it
adds new entries. Otherwise, you'll have multiple A record for one
host. This is alright for your multi-homed machines, but for laptop on
the move, it's disasterous.
Changes were made to the following files:
conf/options.h : added #define MSQL
named/db_defs.h : added d_dynamic to struct databuf
named/db_load.c : added routines to db_load() to read from msql db
named/db_update.c : added code to remove duplicate entries
if d_dynamic flag is set
named/ns_defs.h : added z_db* entries to struct zoneinfo
named/ns_glob.h : added global usingMsql var.
named/ns_init.c : added msql_update_check()
named/ns_maint.c : added code to query db at a given rate, and reload
the nameserver after another period of time